<?php
class Nadeb_Twitter_Manipulation
{
	protected $userName = "";
	protected $password = "";
	
	private $isSent   = false;
	private $response = "";

	public function __construct()
	{

	}

	/**
	 * GET URL
	 * 
	 * @var method   - endereco da pagina na API
	 * @var userName - nome do usuario a ser autenticado
	 * @var password - senha do usuario
	 */
	private function getURL($method,  $userName='', $password='')
	{
		if ($userName=='' || $password=='')
		{
			$userName = $this->userName;
			$password = $this->password;
		}

		$fp = fsockopen("twitter.com", 80, $errno, $errstr, 30);

		if (!$fp) 
		{
			echo "$errstr ($errno)<br />\n";
		}
		else
		{
			$out = ""
				. "GET $method HTTP/1.1\r\n"
				. "Host: api.twitter.com\r\n"
				. "Authorization: Basic ".base64_encode ($userName.':'.$password)."\r\n"
				. "Connection: Close\r\n\r\n";

			fwrite($fp, $out);
			while (!feof($fp))
			{
				$this->response .= fgets($fp, 128);
			}
			fclose($fp);
			
			$x = strpos($this->response,"<?xml");
        	if ($x>0)
        	{
	            $this->response = substr($this->response,$x);
        	}
		}
	}
	
	public function show_user($_user,$_psw)
	{
		$this->getURL( 'http://api.twitter.com/version/users/show.xml?id=' . $_user, $_user, $_psw );
		
		$xml = new SimpleXMLElement( $this->response );
		return $xml;
	} 


	/**
	 * ENVIAR MENSAGEM PARA LISTA AUTENTICADA
	 * 
	 * @var userName - nome do usuario a ser autenticado
	 * @var password - senha do usuario
	 * @var msg      - mensagem a ser postada no twitter
	 */
	public function send_message($_user,$_psw,$_message)
	{
		// Encode para exibir corretamente a mensagem
		$message = urlencode($_message);
		// Post da mensagem no twitter
		$out=""
			."POST http://twitter.com/statuses/update.json HTTP/1.1\r\n"
			."Host: twitter.com\r\n"
			."Authorization: Basic ". base64_encode( $_user.':'.$_psw ) ."\r\n"
			."Content-type: application/x-www-form-urlencoded\r\n"
			."Content-length: ". strlen( "status=$message" ) ."\r\n"
			."Connection: Close\r\n\r\n"
			."status=$message";


		$fp = fsockopen ('twitter.com', 80);
		fwrite ($fp, $out);

		while (!feof($fp))
		{
			$this->response .= fgets($fp, 128);
		}
		fclose ($fp);
		
		$errorA = strpos($this->response,"/1.1 502 Bad Gateway");
		$errorB = strpos($this->response,"/1.1 403 Forbidden");
		$errorC = strpos($this->response,"/1.1 401 Unauthorized");
		
		if( $errorC > 0 )
		{
			$return       = "ERROR";
			$this->isSent = false;
		}
		else
		{
			$return       = "OK";
			$this->isSent = true;
		}
		
	}

	public function isSent()
	{
		return $this->isSent;
	}
	
	public function get_sendMessageLOG()
	{
		return $this->response;
	}
}

 


/// EXEMPLOS DE UTILIZA��O DA CLASSE:

/*
// CRIA NOVO OBJETO
$tw = new TwitterAPI();
$tw->show_user();
*/

/* 
// BUSCA A PAGINA 1 EM XML DA SUA LISTA DE AMIGOS
$res = $tw->getFriendList('mat3us', 'deepdeath');
echo "<pre> PAGINA 1: <BR>";
print_r($res);
echo "</pre>";
*/

/*
// MANDA MENSAGEM AUTENTICADA COM SEU USUARIO
$res = $tw->sendMessage('mat3us','deepdeath','Isso � uma xinforimpola');
echo "<pre> PAGINA 2: <BR>";
print_r($res);
echo "</pre>";
*/


